查看原文
其他

第十一讲 R-两独立样本Wilcoxon检验

跟我学 投必得医学 2022-05-07

在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。


上一讲中,我们介绍了第十讲 R-两独立样本t检验然而两独立样本t检验仅适用于正态分布的样本,对于分布非正态,且经过一定的数值转换尝试后,仍然无法满足正态性要求的样本,无法使用t检验。

此时,两独立样本的Wilcoxon秩和检验成为备选方法,它将两独立样本组的非正态样本值进行比较。它是一种非参数样本检验,基于样本的秩次排列,而非平均值。

单样本Wilcoxon检验用于检验一组样本和理论值是否有差异。当我们比较两组样本间是否存在差异时,就需要用到今天的统计学方法:两独立样本Wilcoxon符号秩检验。


两独立样本Wilcoxon检验


两独立样本Wilcoxon检验(也称为Wilcoxon秩和检验或Mann-Whitney检验)是一种非参数替代配对双样本t检验,其可以被用于比较样品的两个独立的组。
当您的数据不是正态分布时使用。


注意

当数据呈非正态分布时,选择Wilcoxon检验。可以使用Shapiro-Wilk test进行检查。请参看第六讲 R-数据正态分布检验


1. 研究问题和统计假设


典型的研究问题是



  • A组中位数(mA)是否等于B组中位数(mB)?


  • A组中位数(mA)是否小于B组中位数(mB)?


  • A组中位数(mA)是否大于B组中位数(mB)?

在统计数据中,我们可以定义相应的无效假设(H0) 如下:

  1. H0:mA = mB

  2. H0:mA ≤ mB

  3. H0:mA ≥ mB

相应的备择假设(H1)如下:

  1. H1:mA ≠ mB (不同)

  2. H1:mA > mB(大于)

  3. H1:mA < mB(小于)


注意

  • 假设1)称为双向检验

  • 假设2)和3)称为单向检验


2.两独立样本Wilcoxon检验的公式

2.1 两个样本的容量均小于10的检验方法

检验的具体步骤:

第一步:将两个样本数据混合并由小到大进行等级排列(最小的数据秩次编为1,最大的数据秩次编为n1 + n2)。

第二步:把容量较小的样本中各数据的等级相加,即秩和,用T表示。

第三步:把T值与秩和检验表中某α显著性水平下的临界值相比较,如果T1 < T < T2,则两样本差异不显著;如果T不等于T1或T大于等于T2, 则表明两样本差异显著。


2.2 两个样本的容量均大于10的检验方法

当两个样本容量都大于10时,秩和T的分布接近于正态分布,因此可以用Z检验,其基本公式为:

式中:T为较小的样本的秩和。

我们可以为自由度(df)计算与检验统计量(| z|),通过查询其相对性的z界值表,对比其在df=n1+n2-1处的P值。

如何解释结果?

如果p值低于或等于显着性水平0.05,我们可以拒绝无效假设并接受备择假设。换句话说,我们得出结论,两组样本代表的总体间存在有显着差异。

3. 用R完成两独立样本Wilcoxon检验


可以使用R函数wilcox.test()计算两独立样本Wilcoxon检验:

wilcox.test(x, y, alternative = "two.sided")
  • x,y

    数值向量

  • alternative

    备择假设。

    允许值为“two.sided”(默认),也可以根据需要设置为“greater”或“less”之一。

3.1 将数据导入R

在这里,我们将使用一个示例数据集,其中包含18个人(9名女性和9名男性)的体重:

women_weight <- c(88.9, 81.2, 73.3, 21.8, 63.4, 84.6, 28.4, 28.8, 28.5)men_weight <- c(37.8, 80, 33.4, 36, 89.4, 83.3, 97.3, 81.3, 92.4)
# 建立一个数据框my_data <- data.frame(group = rep(c("Woman", "Man"), each = 9),weight = c(women_weight, men_weight))

我们想知道,女性体重是否与男性体重不同?

2.2 检查数据
# 打印所有数据print(my_data)

输出结果:

group weight1 Woman 88.92 Woman 81.23 Woman 73.34 Woman 21.85 Woman 63.46 Woman 84.67 Woman 28.48 Woman 28.89 Woman 28.510 Man 37.811 Man 80.012 Man 33.413 Man 36.014 Man 89.415 Man 83.316 Man 97.317 Man 81.318 Man 92.4

按性别计算统计信息(中位数和四分位数范围(IQR))。可以使用dplyr软件包。

  • 安装及导入dplyr软件包

install.packages("dplyr")library(dplyr)
  • 按性别group计算统计信息:

group_by(my_data, group) %>%summarise(count = n(),mean = mean(weight, na.rm = TRUE),sd = sd(weight, na.rm = TRUE))
输出结果
# A tibble: 2 x 4group count mean sd1 Man 9 70.1 26.42 Woman 9 55.4 28.1


2.3 使用箱形图可视化数据

请参看第五讲 R-数据描述性统计分析作图


2.4 初步检验两独立样本是否满足正态分布

请参看第六讲 R-数据正态分布检验

假设1:两个样本是否独立?

是的,因为来自男性和女性的样本无关。

假设2:两组中每组的数据是否服从正态分布?

我们将使用with()和shapiro.test()的函数来为每组样本计算Shapiro-Wilk测试。

# Shapiro-Wilk normality test for Men's weightswith(my_data, shapiro.test(weight[group == "Man"]))#输出结果 p = 0.01
# Shapiro-Wilk normality test for Women's weightswith(my_data, shapiro.test(weight[group == "Woman"])) #输出结果 p = 0.045

输出结果中,两个p值小于显着性水平0.05,说明两组数据的分布与正态分布有显着差异。数据分布不符合正态分布的假设检验成立。

请注意,如果两组数据中只有一组不是正态分布,也要使用非参数两样本Wilcoxon秩检验。

假设3:这两个总体是否符合方差齐性?

我们将使用F检验来检验方差齐性。可以使用var.test()函数执行以下操作:

res.ftest <- var.test(weight ~ group, data = my_data)res.ftest

输出结果

F test to compare two variancesdata: weight by groupF = 0.88062, num df = 8, denom df = 8, p-value = 0.8617alternative hypothesis: true ratio of variances is not equal to 195 percent confidence interval:0.1986398 3.9040261sample estimates:ratio of variances0.880622

F检验为p = 0.8617。它大于显着性水平alpha = 0.05。因此,两组数据的方差之间没有显著差异。因此我们认为男女两组方差相等(方差齐性)。

由于以上3个假设综合,由于数据不符合正态分布,因此,我们不可以使用student-t检验。需要使用两独立样本Wilcoxon检验。

2.5计算两独立样本Wilcoxon检验

问题:男女体重之间有显着差异吗?

res <- wilcox.test(weight ~ group, data = my_data, var.equal = TRUE)res

输出结果

Wilcoxon rank sum testdata: weight by groupW = 59, p-value = 0.1135alternative hypothesis: true location shift is not equal to 0

在上面的结果中:

  • p值wilcoxon检验的显着性水平(p值= 0.1135)。

注意

如果要检验男性的体重是否小于女性的体重,请输入以下内容:

wilcoxon.test(weight ~ group, data = my_data,var.equal = TRUE, alternative = "less")



或者,如果您想测试男性的体重是否大于女性的体重,请输入

wilcoxon.test(weight ~ group, data = my_data,var.equal = TRUE, alternative = "greater")


2.6 结果解释

检验的p值为 0.1135,大于显着性水平alpha = 0.05。我们可以得出结论,男性的体重与女性的体重没有显著不同。


2.7 获得wilcox.test()函数的返回值

请参看第九讲 R-单样本wilcoxon检验


好了,本期讲解就先到这里。小伙伴们赶紧试起来吧。

在之后的更新中,我们会进一步为您介绍R的入门,以及常用生物统计方法和R实现。欢迎关注,投必得医学手把手带您走入R和生物统计的世界。

提前打个预告,下一期我们将学习“用R语言做配对样本t检验”。


第一讲 R-基本介绍及安装

第二讲 R-编程基础-运算、数据类型和向量等基本介绍

第三讲 R编程基础-矩阵和数据框

第四讲 R-描述性统计分析


第五讲 R-数据描述性统计分析作图


第六讲 R-数据正态分布检验


第七讲 R-相关性分析及作图


第八讲 R-单样本T检验


第九讲 R-单样本Wilcoxon检验


第十讲 R-两独立样本t检验



当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。


快扫二维码撩客服,

带你进入投必得医学交流群,

让我们共同进步!

↓↓


- END -


长按二维码关注「投必得医学」,更多科研干货在等你!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存